usercmd_t *cmd;
cl_entity_t *pLocal;
Vector viewforward, viewright, viewup, aimforward, aimright, aimup, vTemp;
float newforward, newright, newup, newmagnitude, fTime;
float forward = g_Originalcmd.forwardmove;
float right = g_Originalcmd.sidemove;
float up = g_Originalcmd.upmove;
pLocal = gEngfuncs.GetLocalPlayer();
if(!pLocal)
return;

if(cvar.gvd && !(cmd->buttons & IN_ATTACK) && !(cmd->buttons & IN_USE) && (currentWeaponID!=WEAPON_HE && currentWeaponID!=WEAPON_FLASH && currentWeaponID!=WEAPON_SMOKE))
{
cmd->viewangles.x = 89; //if you do not use (usercmd->buttons & IN_ATTACK) for your nospread you might want to lower this to about 80
cmd->viewangles.y = cmd->viewangles.y + 180;
}

//horizontal velocity movement fix
gEngfuncs.pfnAngleVectors(Vector(0.0f, g_Originalcmd.viewangles.y, 0.0f), viewforward, viewright, viewup);
gEngfuncs.pfnAngleVectors(Vector(0.0f, cmd->viewangles.y, 0.0f), aimforward, aimright, aimup);

newforward = DotProduct(forward * viewforward.Normalize(), aimforward) + DotProduct(right * viewright.Normalize(), aimforward) + DotProduct(up * viewup.Normalize(), aimforward);
newright = DotProduct(forward * viewforward.Normalize(), aimright) + DotProduct(right * viewright.Normalize(), aimright) + DotProduct(up * viewup.Normalize(), aimright);
newup = DotProduct(forward * viewforward.Normalize(), aimup) + DotProduct(right * viewright.Normalize(), aimup) + DotProduct(up * viewup.Normalize(), aimup);

cmd->forwardmove = newforward;
cmd->sidemove = newright;
cmd->upmove = newup; 